#ifndef UC_BRELTRAV_H
#define UC_BRELTRAV_H 1

#include "zadesk.h"
#include "zrxobject.h"
#include "zrxboiler.h"
#include "ucbrgbl.h"
#include "ucbrtrav.h"


// forward class declarations
class UcBrLoop;
class UcBrEdge;
class UcBrLoopEdgeTraverser;
class UcBrVertexEdgeTraverser;


class DllImpExp UcBrEdgeLoopTraverser : public UcBrTraverser
{
public:
    UCRX_DECLARE_MEMBERS(UcBrEdgeLoopTraverser);
    UcBrEdgeLoopTraverser();
    UcBrEdgeLoopTraverser(const UcBrEdgeLoopTraverser& src);
    ~UcBrEdgeLoopTraverser();

    // Assignment operator
    UcBrEdgeLoopTraverser& operator =   (const UcBrEdgeLoopTraverser& src);

    // Queries & Initialisers
    UcBr::ErrorStatus   setEdgeAndLoop  (UcBrLoopEdgeTraverser& loopEdge);
    UcBr::ErrorStatus   setEdge         (UcBrEdge& edge);
    UcBr::ErrorStatus   getEdge         (UcBrEdge& edge) const;
    UcBr::ErrorStatus   getLoop         (UcBrLoop& loop) const;
    UcBr::ErrorStatus   setEdgeAndLoop  (const UcBrLoopEdgeTraverser& loopEdge);
    UcBr::ErrorStatus   setEdge         (const UcBrVertexEdgeTraverser& vertexEdge);
    UcBr::ErrorStatus   setEdge         (const UcBrEdge& edge);
    UcBr::ErrorStatus   setLoop         (const UcBrLoop& loop);
};


#endif

